﻿Current Status
##############
The code is currently fullyported upto commit:
2ec6a84 - Adapted to deprecation of HistogramData. Still need to test it...
https://github.com/HdrHistogram/HdrHistogram/commit/2ec6a844c129fe129f30a53d52285c8fce2b6dfd
EXCEPT that HistogramLogProcessor is not done (https://github.com/HdrHistogram/HdrHistogram/commit/b21c2e15113ea7a7ab4125f784cb3594aabec4ac)


Commits still to port (oldest first) : ✔ ✖ ?
######################
[ ] HistogramLogProcessor (https://github.com/HdrHistogram/HdrHistogram/commit/b21c2e15113ea7a7ab4125f784cb3594aabec4ac)
[✔] Cleaned up JavaDocs to make JDK 8 javadoc linter happy - https://github.com/HdrHistogram/HdrHistogram/commit/a4b9394ba838a2e35dbb8b41271f0008c171f322
[ ] cleanup - https://github.com/HdrHistogram/HdrHistogram/commit/a5289539a320bec4c01074db7f26ea0cec05bc1d
[✖] Update to latest - https://github.com/HdrHistogram/HdrHistogram/commit/db1f6d6dd5508db25d901ce53574ad42c8f7c68b
[✔] Updated to version 1.2.1 - https://github.com/HdrHistogram/HdrHistogram/commit/19977697fb8c016ca1e1d853717f67468320ef71
[✔] Updated version to 1.2.1 - https://github.com/HdrHistogram/HdrHistogram/commit/372509ce4ae9e019d2e97d1fb64787afbd89fb1c
[✔] Updated version to 1.2.2-SNAPSHOT - https://github.com/HdrHistogram/HdrHistogram/commit/f5b7448be2050c277b1ccc908e15ce0abf415360
[ ] Added a histogram output api that takes a maxValueUnitRatio. Useful for histogram logs of non-latency contents, or ones that use different units. 
    https://github.com/HdrHistogram/HdrHistogram/commit/b9daabfe8ab00c58c5c4da4061c265781f021d3e
[ ] Corrected label on second column of histogram log file (to indicate interval length instead of interval end time stamp)
    https://github.com/HdrHistogram/HdrHistogram/commit/c8cad903111b620f84e478e0764354341861a060
[✔] Fixed getPercentileAtValue() to return the highestEquivalentValue() of the value at the requested percentile.
    https://github.com/HdrHistogram/HdrHistogram/commit/68858cf3136e38974828291686195d4619fc8a97


Other TODO's
############
- Verify the performance of .NET v Java, see "Java v. C# Performance.xlsx" for current status

- The Java code uses the AbstrachHistogramBase -> AbstractHistogram -> Histogram/ShortHistogram/... hierachy,
  mainly to ensure that a sensible field layout is achieved. I.e. "hot" accessed fields in AbstractHistogram 
  and "cold" accessed fields in AbstractHistogramBase.cs. It needs to be verified that .NET follows the same
  rules for field layout, i.e. does it group the fields in the same way?? See this issue for some discussion
  about what was involved in getting it right for Java,  
  https://github.com/HdrHistogram/HdrHistogram/commit/5656b5e13d308ea7aa8d457e7f2c0da84aa23fd4

- Make HdrHistogram.NET a NuGet package and publish on www.nuget.org

- Convert all Java doc comments over to .NET compatible ones, use a tool so that it can be re-run in the future.
  This is so you get VS intellisense support for all the v. useful comments that exist in the code
  
- See if there is a JavaDoc equivalent tools/comment format for C# that would auto-produce something like 
  http://hdrhistogram.github.io/HdrHistogram/JavaDoc/? If so, add it to the gh-pages branch.


General Notes 
#############
1. Where possible the .NET port is a line-by-line port of Java, so to make this easier "Utility" or "Glue" classes have
   been added so that the code HdrHistogram code can remain the same as the Java code (as much as possible). For instance
   there is ByteBuffer class that mimics the parts of the Java ByteBuffer class that HdrHistogram uses, then any code in
   AbstractHistogram that uses this looks (almost) identical to the Java code. The idea behind this is to make porting over
   future changes/bug-fixes easier.

2. Even though it looks wierd in .NET, methods names have been left in Java style, i.e. "decodeFromCompressedByteBuffer", 
   rather than "DecodeFromCompressedByteBuffer". Also Java get...() methods have NOT been replaced by .NET properties.
   These were both done to make porting easier, you can put the .NET/Java files in a diff tool and get a useful output.

3. The main exception to 1) is that Java iterators have been replaced by .NET ones, so that foreach(..) can be used.

4. Because the .NET port doesn't have the history of the Java one, it doesn't contain the old HistogramData code that 
   is still in the Java code (but marked as "Deprecated"). It's been removed completely and you can access all the
   same functionality as direct methods calls on AbstractHistogram.
